package com.drug.mingkang.utils;

import cn.hutool.core.codec.Base64;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * 描述：码云图库
 * 所属项目：mingkang
 *
 * @author 依旧
 * @create 2020-08-12 17:08
 * @employ IntelliJ IDEA
 * @since 1.0.0
 */
public class GiteeImgTools {
    /**
     * TODO：这个常量是码云为您分配的私人令牌，Token
     */
    String ACCESS_TOKEN = "3a8ea41b765269c12fae86b4b2ca70aa";
    /**
     * TODO：文件前缀
     */
    String IMG_FILE_DEST_PATH = "/images/";

    /**
     * TODO： 上传图片的message
     */
    String CREATE_REPOS_MESSAGE = "add img"+ DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss");
    /**
     * post
     * 新建文件
     * <p>
     * owner*   仓库所属空间地址(企业、组织或个人的地址path)
     * repo*    仓库路径
     * path*    文件的路径
     * content* 文件内容, 要用 base64 编码
     * message* 提交信息
     * <p>
     * %s =>仓库所属空间地址(企业、组织或个人的地址path)  (owner)
     * %s => 仓库路径(repo)
     * %s => 文件的路径(path)
     */
    String CREATE_REPOS_URL = "https://gitee.com/api/v5/repos/%s/%s/contents/%s";
    /**
     * TODO：仓库名称  这里是您的仓库名称
     */
    String REPO_NAME = "Picture";

    /**
     * 仓库所属地址  这个是您的私人用户名 具体请参考创建仓库时的注意事项
     */
    String OWNER = "Thl2330172120";

    public String saveImg(@RequestParam(value = "file", required = true) MultipartFile file) throws Exception {

        Map<String, Object> resultMap = new HashMap<String, Object>();

        String trueFileName = file.getOriginalFilename();

        assert trueFileName != null;
        String suffix = trueFileName.substring(trueFileName.lastIndexOf("."));

        String fileName = IdUtil.simpleUUID() + suffix;
        
        String paramImgFile = Base64.encode(file.getBytes());

        //转存到gitee
        Map<String, Object> paramMap = new HashMap<>();
        paramMap.put("access_token", ACCESS_TOKEN);
        paramMap.put("message", CREATE_REPOS_MESSAGE);
        paramMap.put("content", paramImgFile);

        String targetDir = IMG_FILE_DEST_PATH + fileName;
        String requestUrl = String.format(CREATE_REPOS_URL, OWNER,
                REPO_NAME, targetDir);
        String resultJson = HttpUtil.post(requestUrl, paramMap);
        JSONObject jsonObject = JSONUtil.parseObj(resultJson);

        if (jsonObject.getObj("commit") != null) {
            JSONObject jsonObjec2= (JSONObject) jsonObject.getObj("content");
            resultMap.put("content", jsonObjec2);
            return (String) jsonObjec2.getObj("download_url");
        } else {
            //失败
            return "";
        }
    }
}